package arrayandstring;
/**
 * https://leetcode-cn.com/problems/maximum-nesting-depth-of-the-parentheses/
 */
public class E1614_MaxDepth {
    /**
     * 官方解法
     * 时间复杂度 O(n) 空间复杂度 O(1) 
     */
    public static int maxDepth(String s) {
        /**
         * 看到括号匹配就利用栈来思考，不一定要用栈来做
         * 给定有效括号字符串，这个字符串的左右括号一定是相等的
         * 1.遇到"("计数器+1
         * 2.遇到")"计数器-1
         * 在这个过程中计数器的值在变化，最大值即为字符串的的嵌套深度
         * depth - 嵌套深度
         * size - 计数器的当前值
         */
        int depth = 0, size = 0;
        // 遍历字符串
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '(') {
                ++size;
                depth = size > depth ? size : depth;
            } else if (s.charAt(i) == ')') {
                --size;
            }
        }
        return depth;
    }
}
